<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

/**
 * 店铺模型
 * author : hxq
 * date : 2017-10-26.
 */
class Shop extends Model
{
    public $timestamps = false;

    protected $table = 'shop';

    protected $primaryKey = 'shop_id';

    protected $fillable = [
        'shop_id', //id
        'user_id', //用户id
        'name', //企业名称
        'organization_code', //组织结构代码证
        'cate_id', //店铺所属行业
        'pic', //营业执照图片
        'province_id', //省份id
        'city_id', //城市id
        'area_id', //区域id
        'business_id', //商圈id
        'shop_name', //店铺名称
        'logo', //店铺首图
        'photo', //商铺环境图
        'cuisine_photo', //菜品图片
        'tel', //商家电话
        'addr', //商铺地址
        'score', //总评分
        'score_num', //评分人数
        'fans_num', //粉丝数量
        'orderby', //排序
        'lng', //地理经度
        'lat', //地理纬度
        'view', //浏览量
        'tags', //标签
        'business_date', //营业时间星期几，0代表星期日。类似： 1，2，3，4，5，6，0
        'business_type', //每天营业时间类型， 0代表全天，1代表自选
        'business_time', //营业时间 类似：08:00-20:00
        'is_branch', //是否为主店 0为分点 1为主店
        'average_price', //人均价
        'consumption_type', //1为可刷卡 2为不可刷卡 3为不显示刷卡方式
        'create_time', //创建时间
        'create_ip', //创建ip
        'closed', //是否删除 1未删除 2删除
        'yh_discount', //店铺优惠买单折扣
        'audit', //0待审核 1审核 2拒绝
        'hash_key', //店铺私钥
        'rate', //平台抽成比例
        'sales', //销量
        'discount', //首单折扣 -1为关闭 0为免单 有值则为折扣值
        'converted', //是否生成了二维码图片，-1删除重新生成，0否1是
        'converted_pdf', //是否生成了二维码pdf，-1删除重新生成，0否1是
        'geohash', //店铺经纬度哈希值
        'pic_oss',
        'logo_oss',
        'cuisine_photo_oss',
        'settlement_interval', //提现周期
        'is_integral', //是否开启积分优惠功能 0为关闭 1为开启
        'is_preferential', //是否使用代金券
        'street_id', //街道id
    ];

    //定义修改字段（将tags的值转为数组展示）
    protected $casts = ['pic', 'logo', 'photo', 'cuisine_photo'];

    //创建访问器
    public function getPicAttribute($value)
    {
        return \App\Library\HandleFile::handleFilePath($value, $this->pic_oss);
    }

    public function getLogoAttribute($value)
    {
        return \App\Library\HandleFile::handleFilePath($value, $this->logo_oss);
    }

    public function getPhotoAttribute($value)
    {
        return \App\Library\HandleFile::handleFilePath($value, $this->photo_oss);
    }

    public function getCuisinePhotoAttribute($value)
    {
        return \App\Library\HandleFile::handleFilePath($value, $this->cuisine_photo_oss);
    }

    //关联评价表
    public function user_comment()
    {
        return $this->hasMany('App\\Models\\UserComment', 'shop_id', 'shop_id');
    }

    //关联商圈
    public function business()
    {
        return $this->hasOne('App\\Models\\CityBusiness', 'id', 'business_id');
    }

    //关联分类表
    public function industry()
    {
        return $this->hasOne('App\\Models\\Industry', 'industryID', 'cate_id');
    }

    //关联买单表
    public function tuan_order()
    {
        return $this->hasMany('App\\Models\\TuanOrder', 'shop_id', 'shop_id');
    }

    //关联店铺优惠
    public function shop_youhui()
    {
        return $this->hasOne('App\\Models\\ShopYouhui', 'shop_id', 'shop_id')->where('is_open', 1);
    }

    //关联评价标签
    public function comment_tags()
    {
        return $this->hasMany('App\\Models\\CommentTag', 'shop_id', 'shop_id');
    }

    //商铺附加属性多对多关联
    public function shop_attr_value()
    {
        return $this->belongsToMany('App\\Models\\AttrValue', 'shop_attribute', 'shop_id', 'attr_id');
    }

    //关联团购表
    public function tuans()
    {
        return $this->hasMany('App\\Models\\Tuan', 'shop_id', 'shop_id');
    }

    //关联所有在线团购
    public function get_all_tuans()
    {
        return $this->hasMany('App\\Models\\Tuan', 'shop_id', 'shop_id')
            ->whereHas('tuan_info', function ($query) {
                $query->where('status', 1);
            });
    }
}
